package com.lyy.extend_study;


/**
 * @Author:  GZQ
 * @date:  2024/11/14 22:27
 * @description:  继承的本质
 */

public class ExtendsTheory {
    public static void main(String[] args) {
        // 内存的布局
        Son son = new Son();
       /*
         ？-> 这时，要按照查找关系来返回
         (1) 首先看子类是否有该属性
         (2) 如果子类有这个属性, 并且可以访问, 则返回信息
         (3) 如果子类没有这个属性, 就看父类有没有这个属性(如果父类有该属性, 并且可以访问, 就返回信息...)
         (4) 如果父类没有就按照(3)的规则, 继续找到上级父类, 直到找到Object类为止。
         */
        // 返回就是大头儿子
        System.out.println(son.name);
        // 返回的就是39
        System.out.println(son.getAge());
        // 返回的就是旅游
        System.out.println(son.hobby);
    }
}

/**
 * 爷类
 */
class GranPa {
    String name = "大头爷爷";
    String hobby = "旅游";
}

/**
 *  父类
 */
class Father extends GranPa{
    String name = "大头爸爸";
    private int age = 39;

    public int getAge() {
        return age;
    }
}

/**
 * 子类
 */
class Son extends Father{
    String name = "大头儿子";
}